#ifndef _TEMPLATE_H_
#define _TEMPLATE_H_

#include <iostream>

using namespace std;

class AbstractClass
{
public:
	virtual void PrimitiveOperation1() = 0;
	virtual void PrimitiveOperation2() = 0;

	void TemplateMethod();
};


class ConcreteClassA:public AbstractClass
{
public:
	virtual void PrimitiveOperation1();
	virtual void PrimitiveOperation2();
};

class ConcreteClassB:public AbstractClass
{
public:
	virtual void PrimitiveOperation1();
	virtual void PrimitiveOperation2();
};

#endif